package br.com.suricattus.util.collections;

import java.util.Arrays;

/**
 * Classe utilitaria para Array
 * 
 * @author lucas lins
 *
 */
public abstract class ArrayUtil {
	
	
	/**
	 * Concatena os arrays informados, retornando o resultado da concatenacao
	 * @param <T>
	 * @param a1
	 * @param a2
	 * @return
	 */
	public static <T> T[] concat(T[] ... arrays){
		if(arrays == null || arrays.length == 0) return null;
		if(arrays.length == 1) return arrays[0]; 
		
		int size = 0;
		for(T[] a : arrays) size += a.length;
		T[] result = Arrays.copyOf(arrays[0], size);
		
		int index = arrays[0].length;
		
		for(int i = 1; i < arrays.length; i++){
			T[] currentArray = arrays[i];
			for(int y = 0; y < currentArray.length; y++){
				result[index++] = currentArray[y];
			}
		}
		
		return result;
	}
	
	/**
	 * Verifica se o valor passado esta contido no array
	 * @param <T>
	 * @param a
	 * @param value
	 * @return
	 */
	public static <T> boolean contains(T[] a, T value){
		for(T t : a) if((t == null && value == null) || (t != null && t.equals(value))) return true;
		return false;
	}
}
